package com.cs.beneficios.web.action;
import com.cs.beneficios.business.entity.BeneficioDAO;
import com.cs.beneficios.business.model.BeneficiarioVO;
import com.cs.beneficios.business.model.BeneficioVO;
import com.cs.beneficios.common.ConnectionFactory;
import com.cs.paoyer.administration.exception.AdministrationUserException;
import com.cs.paoyer.administration.util.AccessControl;
import com.cs.paoyer.common.exception.CommonUserException;
import com.cs.paoyer.common.exception.UserException;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
//import org.apache.struts.action.ActionError;
//import org.apache.struts.action.ActionErrors;
import java.io.IOException;
import javax.servlet.ServletException;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

public class GuardarBeneRenovAction extends Action 
{
  /**
   * This is the main action called from the Struts framework.
   * @param mapping The ActionMapping used to select this instance.
   * @param form The optional ActionForm bean for this request.
   * @param request The HTTP Request we are processing.
   * @param response The HTTP Response we are processing.
   * @return 
   * @throws java.io.IOException
   * @throws javax.servlet.ServletException
   */
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
  {
    ActionMessages messages = new ActionMessages();
    try
    {
      	AccessControl access = new AccessControl();
        access.validateAccess(mapping,request,response);
        //ConnectionFactory cf = new ConnectionFactory("beneficios","beneficios");
		ConnectionFactory cf = new ConnectionFactory();
        HttpSession session = request.getSession();
        List beneficioSelected = (List)session.getAttribute("beneficioSelected");
        List beneSelected = (List)session.getAttribute("beneSelected");
        if((Object)beneficioSelected != null && (Object)beneSelected != null)
        {
           BeneficiarioVO objBeneficiarioVO = (BeneficiarioVO)beneSelected.get(0);
           BeneficioVO objBeneficioVO = (BeneficioVO)beneficioSelected.get(0);
           Long codeSede = new Long(request.getParameter("codeSede"));
           try
           {
             BeneficioDAO objBeneficioDAO = new BeneficioDAO(cf);
            if(objBeneficioDAO.renewBeneficio(objBeneficioVO.getCode(),objBeneficiarioVO.getCode(),objBeneficioVO.getCodSede(),codeSede,objBeneficioVO.getFecha()))
            {
              request.setAttribute("code",objBeneficiarioVO.getCode().toString());
              cf.closeConnection(objBeneficioDAO.getConn());
              return mapping.findForward("success");  
            }else{
              cf.closeConnection(objBeneficioDAO.getConn());
              session.setAttribute("msg","No hay beneficios disponibles en la sede seleccionada.");
              return mapping.findForward("fail");
            }
           }catch(SQLException e)
           {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
             session.setAttribute("msg","Ocurrio un error SQL.");
             return mapping.findForward("fail");
           }
        }else{
          session.setAttribute("msg","No se encontro el beneficiario ni el beneficio.");
          return mapping.findForward("fail");
        }
    
      
  }catch (UserException ue) 
	{
				messages.add("msgWarn",  new ActionMessage("loginForm.message."
																			+ ue.getExceptionVO().getId()));
				saveMessages(request, messages);
      	if(ue.getExceptionVO().getId()==AdministrationUserException.ENDED_SESSION)
        {       
              response.sendRedirect(request.getContextPath()+"/index.jsp");
        }
        else if(ue.getExceptionVO().getId()==CommonUserException.NOT_ALLOWED_RESOURCE)
        {
            response.sendRedirect(request.getContextPath()+"/admin/tile/invalidatedResource.jsp");
        }
        else
        {
            return mapping.getInputForward();
        }
      
  }
    return mapping.findForward("success");
  }
}